#include<iostream>
#include<string>
#include<fstream>
#include"bundle.h"

int main(int argc,char*argv[])
{
    std::cout<<"argv[1]是原始文件路径名称\n";
    std::cout<<"argv[2]是压缩包名称\n";
    if(argc<3) 
        return -1;
    std::string ifilename=argv[1];//记录压缩文件名称
    std::string ofilename=argv[2];//记录解压后文件名称，自己命名

    std::ifstream ifs;
    ifs.open(ifilename,std::ios::binary);//以二进制的方式打开压缩文件
    ifs.seekg(0,std::ios::end);//跳转到文件末尾
    size_t fsize=ifs.tellg();//获取偏移量，在末尾获取偏移量就能知道文件的大小
    ifs.seekg(0,std::ios::beg);//跳转到文件起始
    
    std::string body;
    body.resize(fsize);//调整body大小位文件大小
//body.c_str()是一个const对象，不许修改数据，所以只能从地址方式读取数据，
    ifs.read(&body[0],fsize);//把从ifs读取到的数据给body

    std::string unpacked = bundle::unpack(body);//解压文件,压缩后的数据保存在unpacked

    std::ofstream ofs;
    ofs.open(ofilename,std::ios::binary);//以二进制方式打开解压后的文件
    ofs.write(&unpacked[0],unpacked.size());//将解压后的数据写ofs文件

    ifs.close();
    ofs.close();

    return 0;
}